package app.musicPlayer.domain;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;

import android.app.Activity;
import android.os.Environment;
import app.persistencia.CancionLista;
import app.persistencia.ListaDeReproduccion;
import app.persistencia.ListasDeReproduccion;

public class ReproduccionActual extends Activity {

	static private ReproduccionActual reproduccionActual = null;
	private ArrayList<CancionLista> enReproduccion;
	private int song;
	private Random rand;
	private boolean reproductorEnMarcha;
	
	public boolean isReproductorEnMarcha() {
		return reproductorEnMarcha;
	}

	public void setReproductorEnMarcha(boolean reproductorEnMarcha) {
		this.reproductorEnMarcha = reproductorEnMarcha;
	}

	private ReproduccionActual(){
		enReproduccion = new ArrayList<CancionLista>();
		song = 0;
		rand = new Random();
		reproductorEnMarcha = false;
	};
	
	public static ReproduccionActual getReproduccionActual() {
		return reproduccionActual;
	}

	public ArrayList<CancionLista> getEnReproduccion() {
		return enReproduccion;
	}

	public int getSong() {
		return song;
	}

	public Random getRand() {
		return rand;
	}

	static public ReproduccionActual getIntances() {
		if(reproduccionActual == null) {
			reproduccionActual = new ReproduccionActual();
		}
		return reproduccionActual;
	}
	/**
	 * 
	 * @return null if list is finished or return cancionLista actual
	 */
	public CancionLista getNextSong() {
		/**
		 * TODO consultar si hay repeat all
		 */
		song++;
		System.out.println(song);
		if(song == enReproduccion.size())
		{
			song = -1;
			return null;
		}
		else 
			return enReproduccion.get(song);
	}
	public CancionLista getPreviousSong() {
		/**
		 * TODO consultar si hay repeat all
		 */
		if (song != -1) song--;
		if(song == -1)
		{
			song = enReproduccion.size()-1;
		}
		return enReproduccion.get(song);
	}
	public void assignNewSongsList(ArrayList<CancionLista> lista) {
		enReproduccion.clear();
		enReproduccion.addAll(lista);
		song=-1;
		rand.setSeed(lista.size()-1);
	}
	public CancionLista setSong(int i) {		
		return enReproduccion.get(song=i);
	}
	public CancionLista random() {
		song = rand.nextInt();
		return enReproduccion.get(song);
	}
	public boolean isEmpty() {
		if(enReproduccion == null || enReproduccion.isEmpty())
			return true;
		else 
			return false;
	}
}
